define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {

    var Controller = {
        index: function () {
            // 初始化表格参数配置
            Table.api.init({
                extend: {
                    index_url: 'eduadmin/classschedule/index',
                    add_url: 'eduadmin/classschedule/add',
                    fastadd_url: 'eduadmin/classschedule/fastadd',
                    edit_url: 'eduadmin/classschedule/edit',
                    del_url: 'eduadmin/classschedule/del',
                    multi_url: 'eduadmin/classschedule/multi',
                    table: 'classschedule',
                }
            });

            var table = $("#table");

            // 初始化表格
            table.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url,
                pk: 'id',
                sortName: 'id',
                columns: [
                    [
                        {checkbox: true},
                        {field: 'id', title: __('Id')},
                        {field: 'branch_names', title: __('Branchids')},
                        {field: 'class_name', title: __('Classid')},
                        {field: 'teacher_name', title: __('Teacherid')},
                        {field: 'classroom_name', title: __('Classroomid')},
                        {field: 'starttime', title: __('Starttime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
                        {field: 'endtime', title: __('Endtime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
                        //{field: 'classimages', title: __('Classimages'), formatter: Table.api.formatter.images},
                        {field: 'status', title: __('Status'), visible:false, searchList: {"status 0":__('Status 0'),"status 1":__('Status 1'),"status 2":__('Status 2')}},
                        {field: 'status_text', title: __('Status'), operate:false},
                        {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
                        //{field: 'createby', title: __('Createby')},
                        //{field: 'updatetime', title: __('Updatetime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
                        //{field: 'updateby', title: __('Updateby')},
                        {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
                    ]
                ]
            });

            //快速排课
            $(document.body).on("click", ".btn-fastadd", function (e) {
                Fast.api.open($.fn.bootstrapTable.defaults.extend.fastadd_url, __('FastAdd'), $(this).data() || {});
            });
            
            // 为表格绑定事件
            Table.api.bindevent(table);
        },
        add: function () {
            Controller.api.bindevent();
          
            //选择器的初始化
            initSelectPage();
        },
        fastadd: function () {
            Controller.api.bindevent();

            //选择器的初始化
            initSelectPage();
                            
            //教师选择器的初始化，使用空数据进行初始化
            require(['selectpage'], function () {
                $('#c-teacherid', $("form[role=form]")).selectPage({
                    showField: 'nickname',
                    keyField: 'id',
                    data: 'auth/admin/selectpage',
                    //向服务端提交的参数中，增加已选中的
                    //设置返回-1，意为通知服务端返回空列表，初始化时使用
                    params: function(){
                        var pv = $('#c-branchids').val();
                        return {'custom[branchids]': pv?pv:'-1'};
                    }
                });
            });
        },
        edit: function () {
            Controller.api.bindevent();
        },
        api: {
            bindevent: function () {
                Form.api.bindevent($("form[role=form]"));
            }
        }
    };

    //选择器的初始化
    function initSelectPage() {      
               //学校选择器的初始化
               var lastBranch = '';
               require(['selectpage'], function () {
                   $('#c-branchids', $("form[role=form]")).selectPage({
                      showField: 'name',
                      keyField: 'id',
                      data: 'branch/selectpage',
                   eSelect: function (data) {
                           if(data && lastBranch !== data.id){
                               $('#c-classid').selectPageClear();
                               $('#c-classroomid').selectPageClear();
                           }
                   },
                   eClear : function(){
                           $('#c-courseid').selectPageClear();
                   }
                   });
               });
   
               //班级选择器的初始化，使用空数据进行初始化
               require(['selectpage'], function () {
                       $('#c-classid', $("form[role=form]")).selectPage({
                           showField: 'name',
                           keyField: 'id',
                           data: 'eduadmin/classes/selectpage',
                           //向服务端提交的参数中，增加已选中的
                           //设置返回-1，意为通知服务端返回空列表，初始化时使用
                           params: function(){
                               var pv = $('#c-branchids').val();
                               return {'custom[branchids]': pv?pv:'-1'};
                           }
                   });
               });

                 //课室选择器的初始化，使用空数据进行初始化
                 require(['selectpage'], function () {
                    $('#c-classroomid', $("form[role=form]")).selectPage({
                        showField: 'name',
                        keyField: 'id',
                        data: 'eduadmin/classroom/selectpage',
                        //向服务端提交的参数中，增加已选中的
                        //设置返回-1，意为通知服务端返回空列表，初始化时使用
                        params: function(){
                            var pv = $('#c-branchids').val();
                            return {'custom[branchids]': pv?pv:'-1'};
                        }
                    });
                });
    }
    return Controller;
});